約 5,030,009 件
https://w.atwiki.jp/ninja22/pages/61.html
前のページ < | > 次のページ (4) データベースを作ってみる 3 phpMyAdminの操作 ●挿入 上メニューの「挿入」をクリックするとレコードを入力することができる。 「実行する」を押すとデータを保存することができる。 ●表示 上メニューの「表示」をクリックすると既存の全レコードを一覧表示できる。 ●検索 上メニューの「検索」をクリックすると検索できる。「演算子」と「値」の欄で検索の条件を指定し、「実行する」ボタンで検索されたレコードが一覧表示される。 演算子について 演算子 意味 = フィールドが指定した値と等しい != フィールドが指定した値と等しくない > フィールドが指定した値より大きい < フィールドが指定した値より小さい >= フィールドが指定した値以上 <= フィールドが指定した値以下 LIKE フィールドが指定したパターンとマッチする %LIKE% フィールドに指定したものが含まれている NOT LIKE フィールドが指定したパターンにマッチしない REGEXP フィールドが指定した正規表現パターンにマッチする NOT REGEXP フィールドが指定した正規表現パターンにマッチしない IS NULL フィールドがNULLである。 IS NOT NULL フィールドがNULLでない。 ●SQL SQL(Structured Query Langage)とは、データベースにアクセスするための言語である。 SQLでは、挿入(insert)、編集(update)、削除(delete)、選択(select)といった命令を使ってデータの読み書きができる。 上メニューの「SQL」をクリックすると、SQL命令コードを入力することができる。 レコードの追加 レコードのすべてのフィールドにデータを入れる insert into テーブル名 values (値1, 値2 ..., 値n) レコードの一部のフィールドにデータを入れる insert into テーブル名 (フィールド名1, フィールド名2, ..., n) values (値1, 値2, ..., n) 「’」や「”」 このような記号は直前に「¥」を入れる必要があります。 insert into テーブル名 values (値1, 値2 ..., 値n) レコードの削除条件を指定していないと全部消えてしまうので注意! delete from テーブル名 where 条件 categoryテーブルからidのフィールドが1のレコードを削除する場合 delete from category where id = 1 レコードの変更update命令を使います。 update テーブル名 set フィールド名1=値1, フィールド名2=値2, ..., n where 条件 categoryテーブルからidフィールドが5のレコードを、そのnameフィールドの値を「ペット」に変更する場合 update category set name = ペット where id = 5 レコードを取り出すすべてのレコードを取り出す。 select * from テーブル名 特定のフィールドを取り出す。 select フィールド名1, フィールド名2, ..., n from テーブル名 条件をつけてレコードを取り出す。 select フィールド名1, フィールド名2, ..., n from テーブル名 where 条件 条件を組み合わせてレコードを取り出す。(prefフィールドの値が「東京都」とsexフィールドの値が「男」の条件を同時に満たすレコードを検索する)「or」を使うと、「または」表現になる。 select フィールド名 from テーブル名 where pref = 東京都 and sex = 男 値の範囲を指定する。(idフィールドの値が3~5の間) select * from テーブル名 where id between 3 and 5 値の範囲を指定する2。(prefフィールドの値が○○か□□か△△であるレコード) select * from テーブル名 where pref in ( 東京都 , 神奈川県 ) 文字列を指定する。(nameフィールドの値の先頭に「山田」が含まれるレコード) select * from テーブル名 where name like 山田% 検索方法 意味 田% 最初に「田」がつく文字列 %田 最後が「田」で終わる文字列 %本% 途中に「本」が含まれる文字列 %100¥% 最後に「100%」がつく文字列 正規表現を使った検索※PHPでは「¥s」で数字の集合を表すが、MySQLでは下記表のようになる。 phoneフィールドの先頭部分が数字3桁か4桁であるレコードを検索する。 select * from テーブル名 where phone regexp ^[[ digit ]]{3,4} 文字クラス 内容 digit 数字 alpha アルファベット alnum アルファベットと数字 upper アルファベットの大文字 lower アルファベットの小文字 space ホワイトスペース nullを検索。(phoneフィールドに値が入っていない人を検索) select * from テーブル名 where phone is null nullを検索2。(phoneフィールドに値が入っている人を検索) select * from テーブル名 where phone is not null レコードを並べ替える。(idフィールドの値が5以下のレコードが取り出され、idフィールドの値の昇順に並べ替えられる。)/降順:order by フィールド名 desc select * from テーブル名 where id = 5 order by id 取り出す件数を制限する (limit x, y)先頭からx件のレコードを飛ばし、その後y件のレコードを取り出す。 select * from テーブル名 limit 10, 5 ※ XAMPP 1.7.7 [PHP 5.3.8] での設定項目です。 前のページ < | > 次のページ ◆ ◆ ◆
https://w.atwiki.jp/prj11/pages/21.html
プロジェクトサーバ内にあるファイルの名称とその内容をまとめておきます. ☆がついているものは,なくても良いんじゃない?と思ったものです. 作った人はいらなければ消去,いるなら補足説明をして置いてください. ※新しくファイルを作ったり消去したとき,ファイル名を変えたときはここに反映させておいてね!! ダイエットツール関連のページ cal1.php cal2.php- 食事と運動のチェックボックス chartest.php chartest2.php- 文字化けをチェックするためのページ graph(ディレクトリ)- グラフ描画に使うソフトの置き場 kakunin.php- 個人ページで選択した体重と食事と運動をデータベースにinsertするためのページ log.php- 過去のデータを表示するページ newuser.php- ユーザを新規登録するためのページ pass.txt- MySQLに入るためのパスワード personal.php- 個人ページ.グラフや体重の入力フォームなど personalgraph.php- グラフを描画するページ regist.php- newuser.phpで入力した内容をデータベースにinsertするためのページ st.php- phpのバージョンなどを表示するページ ☆sql(ディレクトリ)- 空っぽでした sql.php- データベースでテーブルを作るときにここにクエリ文を入れると文字化けしないらしい test.txt- 食事メニューをinsertするときに使ったクエリ文 top.php- ログイン画面 ranking.php- ランキングページ yosoku.php- 予測グラフのページ tensu.php- 予測点数付けのページ テスト用のページ checktest.php checktest2.php- チェックボックスから値を得るためのテストページ graph.html- phpで描画したグラフを画像として貼り付けたテストページ graph.php- グラフ描画のテスト チームのホームページ buntan.html contents.html houshin.html index.html member.html menu.html mokuteki.html naiyou.html title.html hp画像 56.jpg HPgraph.png ba20.gif kake02.gif ☆その他 index1.html- naiyou.htmlと同じ prj11.html- 2009年度のprj11チームのサイトのトップページをコピーしたもの? toppage.html- index.htmlと同じ.トップページの試作?
https://w.atwiki.jp/taziro/pages/50.html
[目次] <前ページ> 衝突検出 広域な衝突検出 厳密な衝突検出 AABB グリッド コリジョングループとカテゴリー コリジョンイベント 衝撃力 物理プロパティ Farseer の拡張 テクスチャからの頂点作成 パスジェネレーター パフォーマンス 既知の問題 [衝突検出] Farseer Physics Engine は使いやすい4つの異なる区分を含むコリジョンシステムを提供します: 1. 広域な衝突検出 2. 厳密な衝突検出 3. AABB (Axis Aligned Bounding Box) 4. グリッドの衝突検出 それぞれのシステムについて、以下に説明します: [広域な衝突検出] 広域な衝突検出は、エンジンがしなければならない仕事を減らして衝突検出の速度を上げるために、先進のアルゴリズムに頼ります。現在、3種類の広域な衝突検出アルゴリズムがあります: 1. Sweep And Prune (SAP と呼ばれます) 2. Selective Sweep 3. Brute Force Sweep And Prune アルゴリズムはフレームコヒーレントです。これは画面外に多くのオブジェクトがある場合には、悪い選択となるかもしれないということを意味しますまた、これはオブジェクトが近い位置にあるのなら、最後のフレームにあり、このアルゴリズムは良いことを意味します。SAP アルゴリズムではオブジェクトがテレポートする、またはすごい速さでワールドの端から端まで移動する、または弾丸が好ましくないことに注意して下さい。それにより壊れてしまい、信頼できない衝突を引き起こすかもしれません。SAP の詳細情報はこことここで見ることができます。 Selective Sweep アルゴリズムは BioSlayer 氏によって開発されました。Farseer Physics Engine のデフォルトは SS アルゴリズムです。SS は当初、 Sweep And Prune の上に構築されましたが、SAP よりもパフォーマンスを向上させるためにいくつかの変更がなされました。More information on SS can be found here. SS の詳細情報はここで見ることができます。 Brute Force アルゴリズムはこれらの中で最もシンプルです。しかし3つの中で最も実行速度が遅いですワールド上の全てのジオメトリを辿り、その AABB を比較します。Brute Force アルゴリズムの計算量は O(n^2) です。しかしジオメトリの数が少なければとても速いです。 [厳密な衝突検出] 厳密な衝突検出は、広域な衝突検出で衝突した全てのペアで発生し、さらにそれらの計算を行います。全ての厳密な衝突検出のコードは、Arbiter クラスの中にあります。下記に厳密な衝突検出で行われることの概要を記載します。広域な衝突検出によって、アービターオブジェクトの中に衝突しているジオメトリのペアが検出されていると仮定します。 1) 最初のジオメトリが持つ全てのワールド座標上の頂点を辿ります。 2) 現在のベクトルが2番目のジオメトリと交差するか? a) false (交差しない): 頂点リストの次のベクトルを計算します。 b) true (交差する): 接触情報を作成し、接触情報リストに挿入します。 3) 1) と 2) を2番目のジオメトリで行います。 4) 接触情報リストに何らかの接触情報があれば、OnCollision イベントに2つのジオメトリと接触情報リストを渡し、呼び出して下さい。 Arbiter クラスは、衝突するときにジオメトリに適用される衝撃力を計算するのにも使用されます。 [AABB] AABB は Axis Aligned Bounding Box の略で、名前が示す通り、軸に平行なバウンディングボックスです。全てのジオメトリはそれぞれの更新時に再計算される AABB を持っています。AABB は比較的安価で2つのジオメトリがお互いに近くにある (もしくは接触している) かどうかを高速にテストするのに使用されます。 下記のようにすると、2つのジオメトリがお互いに近くにあるかどうかをテストできます: if (AABB.Intersect(_circleGeom.AABB,_rectangleGeom.AABB)){ //The 2 AABB s intersect} AABB は回転せず、またアウトラインはジオメトリの長方形ですので、2つの AABB の交差判定を行ったとき、実際には接触していないかもしれないということを覚えておいて下さい。 下の図を見てください。 交差 交差と衝突 (接触) AABB は黒いジオメトリのアウトラインです。見ての通り、それらは回転しておらず、また軸に平行です。本当に接触していれば、衝突するときに生成された赤い接触点が表示されます。 [グリッド] 全てのジオメトリはグリッドオブジェクトを含んでいます。厳密な衝突判定で使用されており、そして距離グリッドを使用します。距離グリッドは、グリッドのそれぞれの点のジオメトリ上で最も近い点とその点の法線を事前計算しています。(法線についての詳細は「物理」の章に記載しています) ジオメトリの内側にある全てのグリッド点の距離は負の数になります。下にグリッドとその点の図を示します: 距離グリッドは一度、事前計算されると、どんなグリッドの中間点の距離と法線も、分かっている点の値で補完することで計算できます。Geom のコンストラクタ、または GeomFactory を使用したとき、グリッドは指定されたグリッドのセルサイズから計算されますグリッドのセルサイズが小さければ、グリッドがより正確なり、またそれによって衝突検出が正確になります。 グリッドの計算はかなり時間がかかることがありますので、事前にすべてのジオメトリの具体例を示して、ちょうど良いグリッドのセルサイズを選ぶという方法は、良いアイデアかもしれません。この詳細については「パフォーマンス」の章に記載しています。 [コリジョングループとカテゴリー] Farseer は、異なるコリジョングループとさらに先進的なコリジョンカテゴリーを構築する方法を提供します。 デフォルトで、全てのジオメトリはコリジョングループ 0 にあり、これは他の全てのジオメトリと衝突することを意味します。2つのジオメトリが同じコリジョングループにある場合は、お互いに衝突しませんが、コリジョングループ 0 は例外です。 下記にをどのようにジオメトリのコリジョングループを設定するかを示します: Body rectBody = BodyFactory.Instance.CreateRectangleBody(PhysicsSimulator, 128, 128, 1); rectBody.Position = new Vector2(250, 400); Geom rectGeom = GeomFactory.Instance.CreateRectangleGeom(PhysicsSimulator, rectBody, 128, 128); rectGeom.CollisionGroup = 10; Body circleBody = BodyFactory.Instance.CreateCircleBody(PhysicsSimulator, 64, 1); circleBody.Position = new Vector2(300, 400); Geom circleGeom = GeomFactory.Instance.CreateCircleGeom(PhysicsSimulator, circleBody, 64, 20); circleGeom.CollisionGroup = 10; もし rectGeom と circleGeom が重なり合っているとしても、お互いに衝突しません。コリジョングループは使いやすいですが、できる事が非常に制限されます。それがコリジョンカテゴリーも存在している理由です。 コリジョンカテゴリーを使用するときに興味深い2つのプロパティがあります: 1) CollisionCategories a) デフォルトは CollisionCategory.All です。 b) ジオメトリがどこのメンバーなのかを定義するために使用されます。 2) CollidesWith a) デフォルトは CollisionCategory.All です。 b) ジオメトリがどこのメンバーと衝突するのかを定義するために使用されます。 コリジョンカテゴリーは CollisionCategory と呼ばれる列挙型を使い、その特別なフラグを有効にします。これはビット演算子で行うことができます。(詳細はここを見て下さい) 例: Body rectBody = BodyFactory.Instance.CreateRectangleBody(PhysicsSimulator, 128, 128, 1);rectBody.Position = new Vector2(250, 400);Geom rectGeom = GeomFactory.Instance.CreateRectangleGeom(PhysicsSimulator, rectBody, 128, 128);rectGeom.CollisionCategory = CollisionCategories.Cat5; rectGeom.CollidesWith = CollisionCategories.All ~CollisionCategories.Cat4; Body circleBody = BodyFactory.Instance.CreateCircleBody(PhysicsSimulator, 64, 1); circleBody.Position = new Vector2(300, 400); Geom circleGeom = GeomFactory.Instance.CreateCircleGeom(PhysicsSimulator, circleBody, 64, 20); circleGeom.CollisionCategory = CollisionCategories.Cat4; circleGeom.CollidesWith = CollisionCategories.All ~CollisionCategories.Cat5; 今回、rectGeom は Cat5 (Category 5) のメンバーで、Cat4 以外の全てと衝突します。 circleGeom Cat4 のメンバーで、Cat5 以外の全てと衝突します。 これは2つのジオメトリがお互いに衝突しないことを意味します。 [コリジョンイベント] 3つの異なったコリジョンイベントがあります。 1. OnCollision (in Geom class) 2. OnSeparation (in Geom class) 3. OnBroadPhaseCollision (in IBroadPhaseCollider interface) OnCollision イベントはジオメトリが他のジオメトリと衝突したときに呼び出されます。イベントメソッドは衝突によって何かが起こったのかどうかを boolean で返す必要があります。 OnSeparation イベントはジオメトリが他のジオメトリと切り離された後に呼び出されます。 OnBroadPhaseCollision イベントは OnCollision イベントと似ていますが、広域な衝突検出のときにもうすでに呼び出されます。 このイベントをキャンセルするとアービターが作成されません。これは衝撃力が適用されず、また関係しているジオメトリの厳密な衝突検出も行われないことを意味します。 イベントの登録方法を下記に記します: Body circleBody = BodyFactory.Instance.CreateCircleBody(PhysicsSimulator, 64, 1); Geom circleGeom = GeomFactory.Instance.CreateCircleGeom(PhysicsSimulator, circleBody, 64, 20); circleGeom.OnSeparation += OnSeperation; circleGeom.OnCollision += OnCollision; PhysicsSimulator.BroadPhaseCollider.OnBroadPhaseCollision += OnBroadPhaseCollision; OnBroadPhaseCollision イベントは PhysicsSimulator の BroadPhaseCollider に登録されることに注意して下さい。 そして、イベントが発生したときにメソッドが実行されます: private bool OnCollision(Geom geom1, Geom geom2, ContactList contactList) { return true; } private void OnSeperation(Geom geom1, Geom geom2) { } private bool OnBroadPhaseCollision(Geom geom1, Geom geom2) { return true;} [衝撃力] 2つの衝撃力システムがあります。 1. 衝突の反応 2. 手動の衝撃力 衝突の反応は、2つのジオメトリがお互いに衝突したときに発生します。 「厳密な衝突検出」の章に記載されている Arbiter クラスは、衝突が発生したときに衝撃力の計算に対して責任を持ちます。もう少し技術的に考えると、接触点が厳密な衝突判定で計算され、衝撃力が適用されることにより、ジオメトリは実際の物理のように振る舞います。 衝突の反応は、下記のように ジオメトリの CollisionResponseEnabled に false を設定することで無効にすることができます: Geom circleGeom = GeomFactory.Instance.CreateCircleGeom(PhysicsSimulator, circleBody, 64, 20); circleGeom.CollisionResponseEnabled = false; 衝突の反応を無効にするということは、全てのジオメトリをすり抜けることを意味します。「コリジョンイベント」の章に記載しているコリジョンイベントは発生します。 また、手動でボディに衝撃力を適用することもできます。(ボディはダイナミクスをコントロールし、ジオメトリは衝突をコントロールしますが、アービターは衝突に関するジオメトリの衝撃力をコントロールすることを覚えておいて下さい。) ボディにフォース/衝撃力を適用する方法が3つあります。 以下にフォースとそのメソッドのリストを示します: 1. フォース 1. ApplyForce 2. ApplyForceAtLocalPoint 3. ApplyForceAtWorldPoint 4. ClearForce 2. 衝撃力 1. ApplyImpulse 2. ClearImpulse 3. ApplyAngularImpulse 3. トルク 1. ApplyTorque 2. ClearTorque フォースはボディを加速させるのに使用されます。ボディまたはボディ上の特定の点に適用することができます。これは、あなたのキャラクターに時間の経過とともに加速するジェットパックを追加するのに使用できます。 衝撃力はボディに衝撃を与えるのに使用されます。衝撃力は、フォースのようにボディを加速させる代わりに、ボディの速度を更新します。ゲームのキャラクターをジャンプさせるのにこれを使用することができます。ジャンプは、瞬時の変化であり、加速はしません。 トルクはボディのトルク (回転) として適用されます。ホイールを回転させるか、ボーダーに丘を駈け上がらせることができます。 [物理プロパティ] Farseer はボディとジオメトリの物理プロパティを変更するための素晴らしいインターフェースを持っています。ほとんどのプロパティは物理エンジン実行中に変更することができ、ダイナミックな振る舞いを作成することを可能にします。 以下に物理プロパティとどのようなものか簡単な説明を示します: Body クラスのプロパティ: AngularVelocity 回転速度はボディが回転している比率です。これはラジアン/秒で計測されます。比率を大きくするとボディが速く回転します。 LinearVelocity ベロシティは位置変更の比率として定義されます。また、ボディの単位時間の置き換えとしても定義されます。これは、ただ移動量を伝えるだけでなく、方向も含まれているベクトルです。 LinearDragCoefficient 抗力は、流体またはガス (空気) によってボディの動きに抵抗する力です。空気中を速く移動しているボディがあると抗力によって徐々に失速します。Farseer Physics では、媒体 (流体またはガス) をボディに入れることができないため、手動でボディの抗力係数を設定しなければなりません。高い抗力係数は、ボディを動かすためにより多くの力が必要で、それにより失速します。 RotationalDragCoefficientほとんど LinearDragCoefficient と同じですが、回転するときにもいくらかの抵抗があります。回転の抗力係数が 0 でボディを回転させると、永遠に回転し続けます。回転の抗力係数が高ければ高いほどボディの回転は速く失速します。 Moment of Inertia (MOI 2Dでボディの慣性モーメントは、どれくらい質量中心についてボディを回転させるのが難しいか (または難しくないか) を示すスカラー値です。 Geom クラスのプロパティ: RestitutionCoefficient 反発係数は衝撃による前後間の速度比です。反発係数に 1 を設定すると、完全な弾みを持ちます。(地面に跳ね返るボールをイメージして下さい) また、0 に設定すると、全く弾まなくなります。 FrictionCoefficient 摩擦力は、2つの物質面がお互いと接触して、運動に対して相対的に抵抗を与える基本的な力です。物質の摩擦力が大きくなると、他の物質と比較してより動きにくくなります。 例えば鋼の氷で、非常に小さい摩擦係数を持ちます。お互いにすぐに滑ってしまいます。一方、舗道の上のゴムは、非常に高い摩擦係数を持っており、ほとんど滑りません。 Farseer Physics は摩擦力を扱う2つの異なった方法がありますので注意して下さい。PhysicsSimulator オブジェクトの FrictionType に次の2つの内1つを設定して下さい。 ○ Average ジオメトリ (物質) の1つが摩擦係数 5 でもう一方が摩擦係数 3 のとき、平均の摩擦係数 4 になります。 ○ Minimum 2つのジオメトリ (物質) の内、低い方の摩擦係数になります。 2つの摩擦係数が 5 と 3 であれば、低い方の 3 になります。 Farseer Physics のデフォルトは Average です。 [Farseer の拡張] Farseer Physics Engine 2.0 から共通の作業の補助を行ういくつかの先進的なメソッドが含まれています。拡張は、物理学エンジンの振る舞いを変えないように高レベルの機能のみです。 [テクスチャからの頂点作成] Farseer Physics Engine 2.0 では、ポリゴン情報の格納されている uint[] 配列を検索し、位置をマッピングするアルゴリズムを含んでいます。これは人が自作のテクスチャからジオメトリを作成するのを簡単にします。 テクスチャから頂点を作成するアルゴリズムを使うには、以下のようにして下さい: //Load texture that will represent the physics body Texture2D polygonTexture = ScreenManager.ContentManager.Load Texture2D ("Content/Texture"); //Create an array to hold the data from the texture uint[] data = new uint[polygonTexture.Width * polygonTexture.Height]; //Transfer the texture data to the array polygonTexture.GetData(data); //Calculate the vertices from the array Vertices verts = Vertices.CreatePolygon(data, polygonTexture.Width, polygonTexture.Height); //Make sure that the origin of the texture is the centroid (real center of geometry) Vector2 polygonOrigin = verts.GetCentroid(); //Use the body factory to create the physics body Body polygonBody = BodyFactory.Instance.CreatePolygonBody(PhysicsSimulator, verts, 5); polygonBody.Position = new Vector2(500, 400); GeomFactory.Instance.CreatePolygonGeom(PhysicsSimulator, polygonBody, verts, 0); [パスジェネレーター] Farseer Physics Engine 2.0 では、パスジェネレーターと呼ばれるものを含んでいます。カーブ、ボディ間のジョイントまたはスプリングに沿ってボディを作成することができます。これは色々な場合で役に立ちます: ○ キャタピラを作る ○ ロープボディ ○ 鎖 少しだけ言及することがあります。 パスジェネレーターは Path クラス内にあり、ComplexFactory が鎖とロープを作成するときに使用します。パスジェネレーターを使用することで、制限を想像するだけで連結されたボディを作成します。パスジェネレーターに全てのボディのジオメトリを作成させることもできます。これは他のオブジェクトとの衝突を有効にします。 [パフォーマンス] パフォーマンスは多くのアプリケーションタイプで本当に重要です。しかし、開発が完了するまでは決して最適化すべきではありません。例えば開発の初期段階からマルチスレッドを導入すると、同期、ロッキング、条件の競合など多くの頭痛の種を持つことになってしまいます。 綺麗なコードを書き、コンパイラを信頼して仕事をすることは最も重要な事です。したがって、綺麗な設計は 1,000 マイクロ秒の最適化よりも遥かに重要です。 以下に、アプリケーションのパフォーマンスを向上させるいくつかの Tips とコツを示します: 1. 背景のチャンクアップ 広域な衝突判定は衝突チェックに AABB を使用しているので、一区画に大きな背景があると、常に背景全体を厳密な衝突判定の対象としてしまいます。これは大きなパフォーマンスダウンを引き起こします。 解決策として複数のチャンクに背景を作成し、現在プレーヤーが立っている領域だけを厳密な衝突のチェックをします。 Before: After: 2. シンプルなジオメトリ 上の背景画像で分かるように、点はカーブのトップを定義しており、アウトラインの全ての詳細を取得するのに必要です。 より多くの点、より大きな詳細。 これは、パフォーマンスの潜在的問題です。 Farseer Physics は高いパフォーマンスで計算するには点の数が少ないことが必要になるため、アウトラインの詳細を維持している間は点の総数を少なく保つことが正しい方法です。 もう一つ注意してほしいことは、プレイヤーが触れることがないのであれば、背景上には多くの点は必要ありません。そのため、底辺には少しも余分な点も置く必要はありません。 3. グリッドのセルサイズは大きく保つ 「グリッド」の章で記載しているように、グリッドはセルサイズを衝突判定の精度を決定するのに使用します。小さいグリッドのセルサイズは、より正確な衝突検出を意味しますが、計算するには長い時間がかかります。 最初にデフォルトサイズを渡すことで、正常なグリッドのセルサイズを手動で見つけることができます。(ジオメトリの AABB に必要な大きさの最小は 1/10 です。詳細情報は「既知の問題」の章の「Geometries going into each other」を見て下さい。)そして衝突に信頼性がなくなるまで大きくして下さい。 最適なグリッドのセルサイズを見つけることで、より良いパフォーマンスを与えることができますが、衝突に予測できない問題が起こるかもしれません。これはアプリケーションの開発が完了しているときのみに行うということを忘れないで下さい。 4. ボディ/ジオメトリの最小数 パフォーマンスを向上させる最も簡単で論理的な方法は、一度にアクティブになるボディとジオメトリの数を少なくすることです。もしマップが大きく、プレーヤーがもう一つの区画を開始するまでに長い間がかかるのであれば、プレーヤーが到着するまでの間、マップのその部分を非アクティブにしておくことができます。 これはいくつかのゲームで本当に簡単にできます。例えば、マップのある一定の場所をセンサーと見なすことができました。(注意:ジオメトリの IsSensor に true を設定して下さい)そしてプレーヤーがそのセンサーに達するとき、マップの次の部分をアクティブにします。 このような方法は多くあります。それは全て、あなたが開発しているゲームの種類に依存します。 5. キャッシング もう一つの非常に簡単な実装は、オブジェクトの高速交換キャッシングです。敵または弾丸を大量に量産しているのなら、敵/弾丸を作り上げるボディとジオメトリを事前に作成できます。 Farseer Physics はアービターにプール(キャッシュ)を使用して、その作成を大幅に高速化します。 このプールが実際はパブリックなので、オブジェクトをキャッシュするのに Farseer からジェネリックの Pool クラスを使用できます。 To create a pool of 10 soldiers, you could do something like this: Pool Enemy pool = new Pool Enemy (); for (int i = 0; i 100; i++) { Enemy enemy = new Enemy(EnemyType.Soldier, Health.100); pool.Insert(enemy); } そして、ゲーム中に兵士を必要とすると: Enemy enemy = pool.Fetch(); enemy.Shoot(); このようにプールがほしい理由が2つあります。そのうちの一つがガーベージコレクター、もう一つがインスタンスの事前作成です。 ガーベージコレクターは後片付けをします。しかしこれは、敵を作成し、Dispose() を実行することを意味します。ガーベージコレクターは敵が死ぬときにシステムメモリからそれを取り除きます。 しかし、プールの中に敵があれば、Dispose() を呼ぶ必要はありません。その敵を非アクティブにするだけです。(そして、敵を描画しません)これにより少しのガーベージコレクションで済みます。 インスタンスの事前作成も Farser Physics が距離グリッドと呼ばれているものを使う場合にとても有効です。このグリッドは、新しくジオメトリが作成されたときに計算されます。そしてそれはとても時間がかかることがあります。 そのため、ゲームを開始する(または、新しいマップをロードする)ときに、敵のプールを作成することで敵の作成時間を大きく高速化できます。 6. リリースモードでコンパイルすることを忘れないで下さい。 アプリケーションを公開リリースするときは、リリースモードに設定されているかどうかを確認してコンパイルして下さい。.net プラットホームは最初に C#/Vb.net コードを IL コード(中間コード) にコンパイルし、それから JIT(Just-In-Time コンパイラ) はそのコードをネイティブのマシン語にコンパイルし、アプリケーションを実行します。 リリース構成でアプリケーションをコンパイルするとき、生成された IL コードでは、JIT が IL を実行するとき、最適化を実行しなければならないとしています。 これはアプリケーションの速度を向上させ、またアプリケーションの全体的なサイズを減少させるかもしれません。 7. ベクトルと行列を参照で渡す XNA ではベクトル (Vector2, Vector3) と行列 (Matrix) は構造体または値型と呼ばれています. 値型がメソッドのパラメータとして渡されると、それはコピーされます。大きな行列または多くのベクトルがあると、コードを遅くすることになります。 ベクトルまたは行列を参照で渡すことによって、アプリケーションを少し高速化することができるかもしれません。 Farseer は特定の場所で値型渡しをサポートしており、例を下記に示します: Body body = BodyFactory.Instance.CreateCircleBody(PhysicsSimulator, 64, 1); Vector2 force = new Vector2(10,10); for (int i = 0; i 100; i++) { body.ApplyForce(ref force); } この例は ref キーワードを使い、100個の force ベクトルをコピーしています。これによりコードの何箇所かは、多くの恩恵を受けるかもしれません。 8. マルチスレッディング マルチスレッディングはとても手間のかかることで、正しく実装するのが困難な場合があります。マルチスレッド化によりゲームパフォーマンスが向上し、画面上に同時発生できるエレメントの数は少し向上します。実装の詳細はこのマニュアルの範囲外ですが、Farseer Physics Engine 2.0 はマルチスレッディングの例を含んでいます。詳細はサンプル(デモ4)を見て下さい。 9. 非アクティブコントローラー Farseer Physics Engine 2.0 は、非アクティブコントローラーと呼ばれている新しい機能を含んでいます。このコントローラーは、「休止ボディ」と呼ばれているものを有効にします。ゲームにほとんど動かないエレメントが多く含んでいる場合、それらをしばらくの間、非アクティブにすることによって、いくらかパフォーマンスを向上させることができます。 非アクティブコントローラーはこのためにあります。物理シミュレーターでそれを有効にし、いくつかの基本設定を行うだけです。詳細情報は「非アクティブコントローラー」の章を見て下さい。 10. スケーリング スケーリングは、Farseer Physics Engine 2.0 のもう一つの新機能です。ゲームが処理が集中しているところがあり、またフレームレートの低下(通常60fps)を許容できるのであれば、エンジンを少し減速し、後で再び速めさせることができます。 しなければならないことは、下記のようにスケーリングコントローラーをアクティブにするだけです: PhysicsSimulator.Scaling.Enabled = true; そして、MaximumUpdateInterval を設定して下さい。要求された更新レート のデフォルトは 0.001f、最大更新レートのデフォルトは 0.01fです。 11. 円 - 円 最適化 これは、レアケースの一つですが、誰かの役に立つかもしれません。 詳細情報はここにあります:Circle - Circle optimization コードを最適化する方法が他にも多くあります。 Farseer Physics 限定でないものについては詳細を述べませんが、ショートリストをここに記載します; 注意:このリストの項目は、小さな最適化に分類されており、本当にパフォーマンスが必要なクリティカルなコードでない限り使用されません。詳細は「Understanding XNA Framework Performance」を見て下さい。Farseer Physics Engine 2.0 はすでにこれらの最適化が行われています。 1. Inline performance critical methods Before: if (IsColorBlack(new Color(10, 4, 1))) { } private bool IsColorBlack(Color color) { return color == Color.Black; } After: if (new Color(10, 4, 1) == Color.Black) { 2. Inline vectors instead of referencing Before: Vector2 distance = Vector2.Zero; Vector2.Subtract(ref GeometryB.Body.Position, ref GeometryA.Body.position, out distance); After: Vector2 distance = Vector2.Zero; distance.X = GeometryB.Body.Position.X - GeometryA.Body.position.X; distance.Y = GeometryB.Body.Position.Y - GeometryA.Body.position.Y; 3. Inline constructors Before: Vector2 distance = new Vector2(10,10); After: Vector2 distance = new Vector2(); distance.X = 10; distance.Y = 10; [既知の問題] Farseer Physics に関する既知の問題がいくつかあります。これらの問題のいくつかは Farseer Physics だけでなく、他の多くの物理エンジンでも見られます。この問題はパフォーマンスやユーザビリティを犠牲せずに修正するのは簡単ではありません。 1. トンネリング オブジェクトが高速で移動するとき、壁にぶつかり内部で動けなくなるか、または衝突することなく突き抜ける現象が発生します。 Farseer Physics 2.0 は、現在、これの良い解決策を何も持っていません。しかしこれが起こるのを防ぐ CCD(Continuous Collision Detection) を実装する計画があります。 以下はその時までの選択肢になります: 1) オブジェクトを遅く動くようにする。 2) オブジェクトを大きくする。 3) タイムステップを小さくする。 4) Ray-casting を使う。 5) スイープ衝突検出(情報はここにあります) 6) マルチサンプリング 2. ジオメトリがお互いに入り込む これは原因が2つあります:ジオメトリは真っ直ぐなエッジでさえ、鋭い点または少なすぎる点を持っています。 鋭い点を持っているならば、デフォルトより小さいグリッドのサイズ値を使う必要があるかもしれません。デフォルトでは、CreatePolygonBody メソッドは collisionGridCellSize に 0 を渡すと、 AABB のサイズを元に collisionGridCellSize を計算します。 もし鋭い点を持ったジオメトリだとしたら、恐らくデフォルトより小さい値になります。0 でないの値を渡し、GeomFactory.GridCellSizeAABBFactor のプロパティを設定することによって、デフォルトの計算を調節することができます。 このプロパティはデフォルトの collisionGridCellSize を計算するのに使用されます。現在、.1 を設定すると、collisionGridCellSize にジオメトリの AABB の最小に必要な値の 1/10 を意味します。 他にできることとして、ジオメトリにより多くの点を挿入してみて下さい。Farseer Physics には、このためのヘルパーメソッドがあります。SubDivideEdges() と呼ばれており、Vertices クラスの中にあります。 下記に例を示します: Body rectBody = BodyFactory.Instance.CreateRectangleBody(128, 128, 1); Vertices vertices = new Vertices(); vertices.Add(new Vector2(-64, -64)); vertices.Add(new Vector2(64, -64)); vertices.Add(new Vector2(64, 64)); vertices.Add(new Vector2(-64, 64)); vertices.SubDivideEdges(10); Geom rectGeom = new Geom(rectBody, vertices, 11); 注意:ボディとジオメトリを物理シミュレーターに追加するのを忘れないで下さい。 Before SubDivideEdges() After SubDivideEdges() 3. センターへの描画 Farseer Physics Engine 1.0.0.4 からジオメトリファクトリーの CreatePolygonGeom メソッドが頂点の重心をセンターに取ることをサポートしています。このスレッドで説明されている方法に従うか、または CreatePolygonGeom メソッドで Vector2 のオフセットパラメータを使用して、動作させることができます。
https://w.atwiki.jp/c0v0p/pages/460.html
#freeze #nofollow #norelated 前ページ次ページPukiWiki/1.4/Manual/Plugin A [#w8de4799] add [#vef8f18f] amazon [#v7173e39] aname [#n9f7bab5] article [#a06a7f60] attach [#qe43bebc] B [#v07e2c1a] back [#vd9cd7ec] backup [#n727318e] br [#g693034c] bugtrack [#a83293e8] bugtrack_list [#q557ea11] C [#y43dfe74] calendar、calendar_edit、calendar_read [#v5a54211] calendar_viewer [#nd7dc5b8] calendar2 [#afda2820] clear [#v515085f] color [#q9790b97] comment [#kc065cd8] contents [#vd4dabcd] counter [#zedb02cf] D [#bfe38652] deleted [#kf08f93d] diff [#zabff312] dump [#k344e979] A add 種別 コマンド 重要度 ★☆☆☆☆ 書式 ?cmd=add page=ページ名 概要 実行すると編集画面が表示されます。更新ボタンを押すと、指定した既存ページの末尾に編集欄で入力した内容が追加されます。 引数 ページ名は省略できません。ページ名はエンコードされている必要があります。 [[edit ../E-G#i1e8d3e8]]が編集画面に既存のページ内容を表示するのに対し、addは常に編集画面が空となります。不用意に既存の入力内容を変更する事がないため、単純に追記していくだけのページではaddを使うと便利です。 備考 もともとデフォルトのskinでメニューの「追加」として使われていましたが、editコマンド(編集)で事足りるため、デフォルトのskinではメニューから外されています。 amazon 種別 (コマンド) インライン型プラグイン ブロック型プラグイン 重要度 ★☆☆☆☆ 書式 ASINを正しく入力してください。( ASIN番号 ); #amazon #amazon(, clear ) #amazon( ASIN番号 , [ left | right ], [ タイトル | image | delimage | deltitle | delete ] ) 概要 アマゾン(http //www.amazon.co.jp)が提供する商品のイメージと、商品名を表示します。 アマゾンのアソシエイト ID(紹介文などを書くことで副収入がもらえるかもしれない仕組み)に対応しています。 ASIN を入力するだけで、予め作成した定型作品紹介フォーマットを自動生成することができます。 引数 全ての引数を省略すると、ブックレビュー作成フォームが現れます。「書評」というページにこれを置くと「書評/ASIN番号」という子ページを作ります。 left,right,clear で商品のイメージとタイトルの出力方式を指定します。 left|right − 表示時の位置を指定します。省略時はrightです。 clear − テキスト回り込み指定を解除します。 タイトル,image で表示内容を指定します。 タイトル − 商品のタイトルを指定します。省略時は自動取得します。 image − 商品のイメージのみ表示します。省略時はイメージとタイトルを表示します。 delimage,deltitle,delete でキャッシュの削除を行います delimage − 対応するイメージキャッシュを削除します。 deltitle − 対応するタイトルキャッシュを削除します。 delete − 対応するイメージキャッシュ,タイトルキャッシュを削除します。 プラグイン内設定 PLUGIN_AMAZON_AID amazon のアソシエイト ID(ないなら 一般ユーザ) PLUGIN_AMAZON_EXPIRE_IMAGECACHE expire イメージキャッシュを何日で削除するか PLUGIN_AMAZON_EXPIRE_TITLECACHE expire タイトルキャッシュを何日で削除するか PLUGIN_AMAZON_NO_IMAGE 画像なしの場合の画像 PLUGIN_AMAZON_SHOP_URI amazon ショップのURI PLUGIN_AMAZON_XML amazon 商品情報問合せ URI 備考 著作権が関連する為、アマゾンのアソシエイトプログラムを確認の上ご利用下さい。 イメージなしの場合に使用する画像が別途必要です。デフォルトは image/noimage.jpg を使用します。 ASIN は書籍の場合 ISBN と全く同じです。書籍以外の場合は、アマゾンのサイトで対象を表示した際の写真のプロパティで判断します。例えば下のような場合だと、最後の 01 を含め、B000002G6J.01 とします。B000002G6J とすると、デフォルトの 09 が適用されてしまい、画像なしとなります(画像だけでなくタイトルも呼ぶのであれば 10 桁で Ok)。 http //images-jp.amazon.com/images/P/B000002G6J.01.LZZZZZZZ.jpg aname 種別 インライン型プラグイン ブロック型プラグイン 重要度 ★★★★☆ 書式 ( アンカー名 [,{[ super ], [ full ], [ noid ]}] ){ アンカー文字列 }; #aname( アンカー名 [,{[ super ], [ full ], [ noid ]}, アンカー文字列 ] ) 概要 指定した位置にアンカー(リンクの飛び先)を設定します。 引数 アンカー名の値がアンカーのフラグメント指定子に使用されます。アンカー名は省略できません。アンカー名には半角英字(大文字/小文字)が使用可能です。 super,full,noid でアンカーの出力方式を指定します。 super − アンカー文字列を上付き表示します。省略時は上付き表示されません。 full − フラグメント指定子以外のURIを補ってアンカーを出力します。省略時はフラグメント指定子のみ出力されます。 noid − アンカーにフラグメント指定子を出力しません。 アンカー文字列が指定された場合、指定した文字列に対してアンカーが出力されます。アンカーの存在を利用者に明示したい場合に利用します。省略時は空文字に対するアンカーとなります。 プラグイン内設定 PLUGIN_ANAME_ID_MAX アンカー名に指定可能な文字列長の上限 PLUGIN_ANAME_ID_REGEX アンカー名に指定可能な文字列の正規表現 PLUGIN_ANAME_ID_MUST_UNIQUE 重複したアンカー名を利用した場合エラーとする 備考 通常はインライン型プラグインとして使用します。2つのブロック型プラグインに挟まれた部分にアンカー設定したい場合にインラインプラグインとして記述できないため、ブロック型プラグインとしても使えるようにしてあります。 PukiWiki本体処理でanameプラグインを内部的に呼び出しているため、必ず組み込む必要があります。 article 種別 (コマンド) ブロック型プラグイン 重要度 ★★★☆☆ 書式 #article 概要 指定した位置に簡易掲示板を設置します。 プラグイン内設定 PLUGIN_ARTICLE_COLS テキストエリアのカラム数 PLUGIN_ARTICLE_ROWS テキストエリアの行数 PLUGIN_ARTICLE_NAME_COLS 名前テキストエリアのカラム数 PLUGIN_ARTICLE_SUBJECT_COLS 題名テキストエリアのカラム数 PLUGIN_ARTICLE_NAME_FORMAT 名前の挿入フォーマット PLUGIN_ARTICLE_SUBJECT_FORMAT 題名の挿入フォーマット PLUGIN_ARTICLE_INS 入力内容を入力欄の前後どちらに挿入するか PLUGIN_ARTICLE_COMMENT 書き込みの下に一行コメントを入れるか PLUGIN_ARTICLE_AUTO_BR 改行を自動的変換するか PLUGIN_ARTICLE_MAIL_AUTO_SEND 投稿内容のメール自動配信をするか PLUGIN_ARTICLE_MAIL_FROM 投稿内容のメール送信時の送信者メールアドレス PLUGIN_ARTICLE_MAIL_SUBJECT_PREFIX 投稿内容のメール送信時の題名 $_plugin_article_mailto 投稿内容のメール自動配信先アドレス attach 種別 (コマンド) ブロック型プラグイン 重要度 ★★★★★ 書式 #attach( [ nolist ] [, noform ] ) 概要 ページの添付ファイルの一覧を表示し、ファイル添付のための入力フォームを設置します。 引数 nolist, noform で表示内容を指定します。 nolist − ページの添付ファイルの一覧を表示しません。省略時は一覧を表示します。 noform − ファイル添付のための入力フォームを表示しません。省略時は入力フォームを表示します。 プラグイン内設定 PLUGIN_ATTACH_MAX_FILESIZE ファイルアップロードの上限 PLUGIN_ATTACH_UPLOAD_ADMIN_ONLY 管理者だけが添付ファイルをアップロードできるようにするか PLUGIN_ATTACH_DELETE_ADMIN_ONLY 管理者だけが添付ファイルを削除できるようにするか PLUGIN_ATTACH_DELETE_ADMIN_NOBACKUP PLUGIN_ATTACH_DELETE_ADMIN_ONLYのとき、管理者が添付ファイルを削除するときは、バックアップを作らない PLUGIN_ATTACH_PASSWORD_REQUIRE アップロード/削除時にパスワードを要求するか(PLUGIN_ATTACH_〜_ADMIN_ONLYが優先) PLUGIN_ATTACH_FILE_MODE アップロードされたファイルのアクセス権 PLUGIN_ATTACH_FILE_ICON アイコンイメージのファイル PLUGIN_ATTACH_CONFIG_PAGE_MIME ダウンロード時のmime-typeを記述したページ 備考 デフォルトのskinのメニューの「添付」で呼び出されているため、デフォルトのskinを使う場合には必ず組み込む必要があります。 プラグイン内設定の PLUGIN_ATTACH_MAX_FILESIZE を増やす場合は、php.iniの upload_max_filesize やApache の LimitRequestBodyなどPukiWiki以外での上限設定がある事に注意して下さい。 B back 種別 ブロック型プラグイン 重要度 ★☆☆☆☆ 書式 #back( [[ 表示文字列 ] [,[ left | center | right ] [,[ 0 | 1 ] [,[ 戻り先 ] ]]]] ) 概要 指定した位置に戻り先へのリンクを設置します。 引数 表示文字列は省略すると「戻る」になります。 left、center、rightで表示位置を指定します。省略時はcenterになります。 left − リンクを左寄せで表示します。 center − リンクを中央寄せで表示します。 right − リンクを右寄せで表示します。 0、1で水平線の有無を指定します。省略すると1になります。 0 − 水平線を表示しません。 1 − 水平線を表示します。 戻り先はリンクを選択時の移動先となるURL、ページ名のいずれかで指定します。PLUGIN_BACK_ALLOW_PAGELINKがTRUEの場合のみページ名を指定可能です。ページ名は「ページ名#anchor」の記述を行う事で移動先のアンカーも指定可能です。PLUGIN_BACK_ALLOW_JAVASCRIPTがTRUEの場合のみ戻り先の省略が可能です。戻り先を省略すると直前に参照していたページが戻り先になりますが、利用者のブラウザの設定がJavaScript onでないと機能しません。 プラグイン内設定 PLUGIN_BACK_ALLOW_PAGELINK ページ名(+アンカー名)による戻り先指定を可能とするかどうか PLUGIN_BACK_ALLOW_JAVASCRIPT 戻り先の指定にJavaScript(history.go(-1))を利用するかどうか PLUGIN_BACK_USAGE エラー時に表示される使用方法 backup 種別 コマンド 重要度 ★★★★★ 書式 ?cmd=backup [ page=ページ名 ] 概要 指定したページ、あるいは全体のバックアップ一覧を表示します。 引数 ページ名を省略すると、PukiWiki全体のバックアップ一覧を表示します。ページ名はエンコードされている必要があります。 プラグイン内設定 PLUGIN_BACKUP_DISABLE_BACKUP_RENDERING バックアップデータをレンダリングする機能を無効にする。 br 種別 ブロック型プラグイン インライン型プラグイン 重要度 ★★☆☆☆ 書式 #br ; 概要 文章中で改行を行います。 段落やリスト、テーブル内など、行末の~による改行ではブロック要素を抜けてしまう個所で改行や空行の挿入するために用います。 プラグイン内設定 PLUGIN_BR_ESCAPE_BLOCKQUOTE 引用文中で利用した場合のタグ不整合を回避する PLUGIN_BR_TAG brプラグインが出力するタグ bugtrack 種別 (コマンド) ブロック型プラグイン 重要度 ★☆☆☆☆ (一般サイト) ★★★★☆ (ソフト開発サイト) 書式 #bugtrack( [[ ページ名 ] [ ,カテゴリー1…カテゴリーn ]] ) 概要 バグ追跡システムの一部分であるバグレポートの入力フォームを設置します。 引数 ページ名にはバグレポートとして作成されるページの親階層となるページ名を指定します。省略時は設置したページとなります。 通常、バグレポートには指定したページ名の子階層に自動的に番号が振られてページが作成されます。つまり"バグ報告ページ"と指定して設置した場合は、バグ報告ページ/1,バグ報告ページ/2,バグ報告ページ/3…のようにバグレポートのページが作成される事になります。 カテゴリーにはバグの対象となりうる要素を指定します。省略時は入力欄となります。 プラグイン内設定 PLUGIN_BUGTRACK_NUMBER_FORMAT バグレポートとして作成されるページ番号の形式 備考 ソフト開発サイトで重宝するプラグインです。もしバグ追跡以外の用途でバグレポートのように定型的な項目を持ったページを作成するフォームが欲しい場合,あるいはバグレポートの項目をカスタマイズしたい場合は[[tracker ../S-U#rf5296e2]]プラグインを使用して下さい。 bugtrack_list 種別 ブロック型プラグイン 重要度 ★☆☆☆☆ (一般サイト) ★★★★☆ (ソフト開発サイト) 書式 #bugtrack_list( [ ページ名 ] ) 概要 バグ追跡システムの一部分であるバグレポートの一覧表示を行います。 引数 ページ名にはバグレポートとして作成されるページの親階層となるページ名を指定します。省略時は設置したページとなります。 備考 通常はbugtrackプラグインと並べて使用します。 bugtrack_listプラグインの中からbugtrackプラグインを呼び出しているため、bugtrackプラグインがないと機能しません。 bugtrack_listプラグインは、[[tracker_list ../S-U#t78d6d0a]]プラグインに比べて低機能ですが、リソース消費が少なく処理速度が速いというメリットがあります。この差はページ数の増加に比例して顕れる傾向があるため、使い分けが必要です。 C calendar、calendar_edit、calendar_read 種別 ブロック型プラグイン 重要度 ★☆☆☆☆ 書式 #calendar( [{[ ページ名 ], [ 年月 ]}] ) #calendar_edit( [{[ ページ名 ], [ 年月 ]}] ) #calendar_read( [{[ ページ名 ], [ 年月 ]}] ) 概要 指定した位置にカレンダーを設置します。カレンダー上でyyyy/mm/ddという日付を選択すると、ページ名/yyyymmddというページを編集/表示できます。 カレンダーの日付を選択した場合に該当するページを編集状態、表示状態のどちらで開くかが3つのプラグインの違いです。calendar_editとは編集状態で、calendar, calendar_readは表示状態で開きます。 引数 ページ名は編集/参照するカレンダーのページの上位ページ名を指定します。 ページ名を省略すると設置したページのページ名になります。 年月は表示するカレンダーの西暦と月をyyyymmの形式で指定します。省略した場合は現在の年月になります。 備考 より高機能なcalendar2プラグインがあるため、あえてcalendarプラグインを使う必要性はほとんどなくなりました。 calendar_editプラグイン及びcalendar_readプラグインの中からcalendarプラグインを呼び出しているため、calendarプラグインがないと機能しません。 calendar_viewer 種別 (コマンド) ブロック型プラグイン 重要度 ★★★☆☆ 書式 #calendar_viewer( ページ名 , yyyy-mm | n | x*y | this [,[ past | future | view ] [, 年月日表示の区切り文字 ]] ) 概要 calendarプラグインまたはcalendar2プラグインで作成されたページを指定した位置に表示します。 引数 ページ名はcalendarプラグインまたはcalendar2プラグインを設置しているページの名前を指定します。 yyyy-mmを指定時、指定した年月のページを表示します。 数字を指定時、指定した件数分のページを表示します。 x*yを指定時、先頭より数えて x ページ目(先頭は0)から、y件づつ一覧表示します。x と yはいずれも数値です。 thisを指定時、今月のページを一覧表示します。 past、future、viewで表示するページの条件を指定します。省略/無指定時はpastとなります。 past − 今日以前のページを表示します。 future − 今日以降のページを表示します。 view − 過去から未来へ一覧表示します。 年月日の区切り文字は-や/などを指定します。省略した場合は-になります。 プラグイン内設定 PLUGIN_CALENDAR_VIEWER_USAGE エラー時に表示される使用方法 PLUGIN_CALENDAR_VIEWER_DATE_FORMAT 日付の表示形式 備考 calendar2プラグインでは今日の日付の記事がない場合、記事を表示しないため、午前0時になったとたんに記事が表示されなくなるという弱点がありました。calendar_viewerはその弱点を補うために開発されたプラグインです。calendar_viewは、日付が変わっても最新の記事を表示することができます。カレンダーそのものの表示はcalendar2(off)で行ないます。 calendar2 種別 (コマンド) ブロック型プラグイン 重要度 ★★★☆☆ 書式 #calendar2( [{[ ページ名 | * ], [ yyyymm ], [ off ]}] ) 概要 指定した位置にカレンダーを設置します。表示月のとなりに表示されたリンク( および )を選択することで先月/次月分のカレンダーを表示できます。カレンダー上でyyyy/mm/ddという日付を選択すると、ページ名/yyyy-mm-ddというページを表示できます。当日分のページが作成されていた場合、カレンダーの右隣に当日分のページ内容を表示します。 引数 ページ名で表示するページの上位階層のページを指定できます。ページ名を省略すると設置したページのページとなります。ページ名に*を指定すると上位階層のページはなし(表示するページ名がyyyy-mm-dd)となります。 yyyymmで表示するカレンダーの西暦と月を指定できます。省略時は当日の年月となります。 offを指定時、当日分ページを表示する機能は抑制されます。省略時は当日分のページを表示します。 備考 calender_editで作成したページはページ名/yyyymmddとなり、calender2で作成したページはページ名/yyyy-mm-ddとなるため、注意が必要です。 clear 種別 ブロック型プラグイン 重要度 ★☆☆☆☆ 書式 #clear 概要 refプラグインのaroundオプションで有効となったテキスト回り込み指定を解除します。 備考 imgプラグインのclearオプション指定時と処理内容は同等です。 color 種別 インライン型プラグイン 重要度 ★★★★☆ 書式 ( [ 文字色 ] [, 背景色 ] ){ 文章 }; 概要 引数で指定したインライン要素(主に文章)の、文字色・背景色を指定します。 引数 文字色・背景色はそれぞれ色名(red、blueなど)、シャープで始まる3桁の16進数値(#000〜#FFF)、同じく6桁の16進数値(#000000 〜 #FFFFFF)のいずれかで指定することができます。大文字小文字は問いません。 文字色・背景色の両方を省略する事はできません。一方を省略した場合は省略した側の色の変更はされません。 プラグイン内設定 PLUGIN_COLOR_ALLOW_CSS 色の変更に(fontタグではなく)CSSを利用する PLUGIN_COLOR_USAGE エラー時に表示される使用方法 PLUGIN_COLOR_REGEX 引数に指定できる色の正規表現 備考 以下、W3C勧告書より抜粋した色名。 Aqua = "#00FFFF", Black = "#000000", Blue = "#0000FF", Fuchsia = "#FF00FF", Gray = "#808080", Green = "#008000", Lime = "#00FF00", Maroon = "#800000", Navy = "#000080", Olive = "#808000", Purple = "#800080", Red = "#FF0000", Silver = "#C0C0C0", Teal = "#008080", White = "#FFFFFF", Yellow = "#FFFF00" comment 種別 (コマンド) ブロック型プラグイン 重要度 ★★★★★ 書式 #comment( {[ above ], [ below ], [ nodate ], [ noname ]} ) 概要 コメントの入力用の入力欄を表示します。 引数 コメントの挿入方法を引数で指定します。 above − 入力したコメントがコメント入力欄の上に追加します below − 入力したコメントがコメント入力欄の下に追加します(省略時はaboveが指定されたとみなします) nodate − 挿入するコメントに、挿入時刻を付加しない(省略時は付加します) noname − コメント記入者名の入力欄を非表示とします(省略時は表示します) プラグイン内設定 PLUGIN_COMMENT_DIRECTION_DEFAULT コメントを入力欄の前後どちらに挿入するか PLUGIN_COMMENT_SIZE_MSG コメントのテキストエリアの表示幅 PLUGIN_COMMENT_SIZE_NAME コメントの名前テキストエリアの表示幅 PLUGIN_COMMENT_FORMAT_MSG コメント欄の挿入フォーマット PLUGIN_COMMENT_FORMAT_NAME 名前欄の挿入フォーマット PLUGIN_COMMENT_FORMAT_NOW 時刻欄の挿入フォーマット PLUGIN_COMMENT_FORMAT_STRING コメント内容全体の挿入フォーマット contents 種別 擬似ブロック型プラグイン 重要度 ★★★☆☆ 書式 #contents 概要 設置したページ中の見出しの一覧を表示します。 counter 種別 ブロック型プラグイン インライン型プラグイン 重要度 ★★★☆☆ 書式 #counter - ( [ total | today | yesterday ] ); 概要 設置したページの参照回数を表示します。 引数 カウンタ表示方法として total, today, yesterday いずれかを指定します。省略時はtotalが指定されたとみなします。ブロック型プラグインでは常にtotalが指定されたとみなします。 total − そのページが参照された回数の総計を表示します。 today − そのページが参照された回数(当日分)を表示します。 yesterday − そのページが参照された回数(昨日分)を表示します。 プラグイン内設定 PLUGIN_COUNTER_SUFFIX ページ参照回数を保持するデータファイルの拡張子 備考 すべてのページで参照回数を表示したい場合は、MenuBarやスキンからcounterプラグインを呼び出してください。 D deleted 種別 コマンド 重要度 ★★☆☆☆ 書式 ?plugin=deleted {[ dir=diff | backup ] [ file=on ]} 概要 削除されたページの一覧を表示します。 引数 file=onを指定時、バックアップ(あるいは差分)のファイル名を出力します。省略時は表示しません。 dirで削除の判定方法を指定します。省略時はbackupです。 backup − バックアップが存在し、ページが存在しない時に削除されたとみなします diff − 差分が存在し、ページが存在しない時に削除されたとみなします 備考 公開Wikiの管理者にとっては誤操作や悪意をもった編集によるページ削除をチェックするのに重宝します。 diff 種別 コマンド 重要度 ★★★★★ 書式 ?cmd=diff page=ページ名 概要 指定したページの現在の内容と最後のバックアップ状態との差分を表示します。 引数 ページ名に変更差分を表示するページを指定します。ページ名はエンコードされていなければなりません。 備考 最後のバックアップ以外との差分を表示する場合はbackupを利用します。 dump 種別 コマンド 重要度 ★☆☆☆☆ 書式 ?plugin=dump 概要 指定ディレクトリ内のファイルをまとめてtar(tar.gz, tgz)形式でバックアップ/リストアします。 バックアップ/リストアの実行には管理者パスワードが必要です。 バックアップはファイル名をページ名に変換して取得する事ができます。 この変換でリストアには利用出来なくなりますが、 ファイル名からページ名の類推は容易になります。 バックアップは取得するディレクトリを任意に指定する事ができます。 リストアは該当ファイルの上書きによって行われます。 そのため、ファイルの削除を行う事はできません。 バックアップ/リストア対象として指定可能なディレクトリは、以下の通りです。 DATA_DIR (wiki/*.txt) UPLOAD_DIR (attach/*) BACKUP_DIR (backup/*) プラグイン内設定 PLUGIN_DUMP_ALLOW_RESTORE リストアを許可するかどうか PLUGIN_DUMP_FILENAME_ENCORDING ページ名をディレクトリ構造に変換する際の文字コード PLUGIN_DUMP_MAX_FILESIZE 最大アップロードサイズ(Kbyte) PLUGIN_DUMP_DUMP バックアップ時にプラグイン内で利用する引数 PLUGIN_DUMP_RESTORE リストア時にプラグイン内で利用する引数 備考 PukiWikiが内部管理するファイルを直接取得/更新するという性質上、 セキュリティ上の問題を引き起こす可能性があります。十分ご注意ください。 DATA_DIRのリストアを行った場合は、[[links ../L-N#m5bbd018]]プラグインで ページ間のリンク情報キャッシュを更新する必要があります。 前ページ次ページPukiWiki/1.4/Manual/Plugin
https://w.atwiki.jp/nebanebawindows/pages/34.html
IME Watcher for Windows XPとは? とりあえずここにいけばわかると思いますが、言語バーを非表示にしても タスクトレイ上で監視できるというソフトです。 タスクバーが広く使えるようになるうえ、スッキリして見た目もいいです。 使用前 使用後 インストール Setup.exe を実行し指示したがっていくだけです。 スタートアップに登録しておくと便利です。 アイコンを変更する アイコンダウンロードのページへ 好みのアイコンをダウンロードしましょう。今回はこれを使ってみます。 ダウンロードしたフォルダを適当な場所においてください。 ImeWatch.exeを実行し起動してください。 起動したら右クリックでメニューをだして[IME Watcherのプロパティ]を選択。 変更したいアイコンを選択してください。 変更するアイコンを選択してください。 全て変更したら[OK]を押して終了です。 言語バーを非表示にする。 [スタート]→[コントロールパネル]→[地域と言語のオプション]→[言語タブ] [詳細]をクリック [言語バー]をクリック チェックを全て外し[OK] 不具合・問題 IME WatcherのFAQを読んでおきましょう。個人的にはWordを使用するとき以外は不便を感じません。(詳細なテキスト サービスを無効にする(O)が見つからない・・・) -
https://w.atwiki.jp/c21coterie/pages/532.html
2261 iwi http //judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2261 文字列から部分文字列を取得して左右対称な文字列を作るとき何文字まで作れるかを答える問題。 簡単に正答数を稼げる問題。 短いコードで合格している人がいるがどんなテクニックがあるのか? 左右対称という恣意的なルールを記述するのにどうしたってコード中にその部分の記述が必要でコードサイズが膨らむはずなのだけど? #include stdio.h #include string.h char text[20]; int len,ans=0; char cpy[20]; void saiki(int deep,int nowP){ if(deep==len){ //左右対称なら奇数になるはず char c1,c2; bool out=false; cpy[nowP]= \0 ; if(nowP%2==1 nowP 2){ for(int i=0;i nowP/2;i++){ c1=cpy[i]; c2=cpy[nowP-i-1]; if(c1== i c2!= i )out=true; if(c1== w c2!= w )out=true; if(c1== ( c2!= ) )out=true; if(c1== ) c2!= ( )out=true; if(c1== { c2!= } )out=true; if(c1== } c2!= { )out=true; if(c1== [ c2!= ] )out=true; if(c1== ] c2!= [ )out=true; if(out==true)return; } if(strstr(cpy,"iwi")==NULL)return; ans=ans nowP?ans nowP; } }else{ cpy[nowP]=text[deep];//この文字を使う saiki(deep+1,nowP+1); saiki(deep+1,nowP); } } int main(){ scanf("%s",text); len=strlen(text); saiki(0,0); printf("%d\n",ans); } 2262 Stopping Problem http //judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2262 2次元で記述されたジョークコンパイラを実装する問題。 ジョークなので何とも言えない言語ですが一応サイズ制限をなくせばチューリング完全らしいです。 まあ一応理論上はそうなんでしょうね。 過去に同じ状態を通ってないかメモしながら幅優先探索するだけです。 #include stdio.h #include set #include queue int dxs[]={1,0,-1,0}; int dys[]={0,-1,0,1};//右、上、左、下の順 int r,c; struct cur{ int x,y,arrow;//位置と向き int num;//メモリの状態 bool operator (const cur c)const{ if(x!=c.x)return x c.x; if(y!=c.y)return y c.y; if(arrow!=c.arrow)return arrow c.arrow; return num c.num; } cur move(int arrow){ cur re; re.x=(x+dxs[arrow]+c)%c; re.y=(y+dys[arrow]+r)%r; re.arrow=arrow; re.num=num; return re; } }; int main(){ scanf("%d %d", r, c); char map[22][22]; int x,y; for(int i=0;i r;i++){ scanf("%s",map[i]); } cur c1,nextC; c1.x=c1.y=c1.num=c1.arrow=0; std set cur memo; std queue cur Q; memo.insert(c1); Q.push(c1); bool stop=false; while(Q.empty()==false){ c1=Q.front(); Q.pop(); x=c1.x; y=c1.y; char com=map[y][x]; if(com== @ ){ stop=true;//停止 break; } if(com== ? ){ //4方向全て試す for(int i=0;i 4;i++){ nextC=c1.move(i); if(memo.find(nextC)==memo.end()){ memo.insert(nextC); Q.push(nextC); } } continue; } if(com== ){ nextC=c1.move(2);//左 }else if(com== ){ nextC=c1.move(0);//右 }else if(com== ^ ){ nextC=c1.move(1);//上 }else if(com== v ){ nextC=c1.move(3);//下 }else if(com== _ ){ if(c1.num==0)nextC=c1.move(0);//0なら右 else nextC=c1.move(2); }else if(com== | ){ if(c1.num==0)nextC=c1.move(3);//0なら下 else nextC=c1.move(1); }else if(com== . ){ nextC=c1.move(c1.arrow);//そのまま }else if( 0 =com com = 9 ){ nextC=c1.move(c1.arrow); nextC.num=com- 0 ; }else if(com== + ){ nextC=c1.move(c1.arrow); nextC.num=(c1.num+1)%16; }else if(com== - ){ nextC=c1.move(c1.arrow); nextC.num=(c1.num-1+16)%16; } if(memo.find(nextC)==memo.end()){ memo.insert(nextC); Q.push(nextC); } } printf("%s\n",stop?"YES" "NO"); } 2263 The First Acceptance http //judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2263 プログラミングコンテストを題材にした問題。 解法 とりあえず範囲が広いのでstd mapを使って動的計画法を使ってみましたがなんか違う感じです。 皆メモリ使用量低で解いてますね。 私のコードはメモリを多めに使ってます。 #include stdio.h #include map #include vector #include algorithm struct S{ int a,b; bool operator (const S s)const{ return b s.b; } }; int main(){ int n,a,b,ans=0; std map int,int memo,nextMemo; memo[0]=0; scanf("%d", n); S s; std vector S vec; for(int i=0;i n;i++){ scanf("%d %d", s.a, s.b); vec.push_back(s); } std sort(vec.begin(),vec.end()); for(int i=0;i vec.size();i++){ a=vec[i].a; b=vec[i].b; for(std map int,int iterator it=memo.begin();it!=memo.end();it++){ int t=(*it).first+a; int t2=(*it).second+1; int t3; if(t b)break; if(memo.find(t)==memo.end()){ if(nextMemo.find(t)==nextMemo.end()||nextMemo[t] t2)nextMemo[t]=t2; t3=t2 nextMemo[t]?t2 nextMemo[t]; }else if(memo[t] t2){ memo[t]=t2; t3=t2; }else{ t3=memo[t]; } if(ans t3)ans=t3; } memo.insert(nextMemo.begin(),nextMemo.end()); nextMemo.clear(); } printf("%d\n",ans); } 2264 Spanning Trees http //judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2264 解法 グラフを描いてみても時間をかけたら答えが見つかりそうな気もしつつ少しめんどくさかったので1分ほど他人のコードを知ら見してしまった。 ソースに解説はなかったので多分だけど用は正多角形としてグラフを描いたとき対角線を一番外側、一本内側、2本内側、、、n/2本内側、、、1本内側、外側という順に結んでいく。 これを一点分回転すると重ならないグラフがn/2本描けるということらしい。 原理が分かるとなるほどな問題。 #include cstdio using namespace std; int n, k; void solve(){ for(int st=0; st k; st++){ int L=(n+st-1)%n; int R=st; for(int i=0;i n-1;i++){ if(i%2==0){ printf("%d %d\n",R+1,L+1); R=(R+1)%n; }else{ printf("%d %d\n",L+1,R+1); L=(L+n-1)%n; } } printf("\n"); } } int main(){ scanf("%d %d", n, k); if(k n/2){ printf("-1\n"); }else{ solve(); } }
https://w.atwiki.jp/penspinorder/pages/657.html
serket1st outlime pub. date music editor spinner
https://w.atwiki.jp/fuchu/pages/20.html
sqlite3 cmd table参照 .tables .tables table詳細 .schema table name .schema user pragma table_info( table name ) pragma table_info( user ) sql cmd table作成 create table table name ( column1 primary key, column2 ,…); create table user (id int primary key, name text); record追加 insert into table name values ( column1 value , column2 value ,…); insert into user values (1, nagamine ); column追加 alter table table name add column column ; alter table user add column sex text; record更新 update user set column = value where condition ; update user set sex= m where id=1; record一括更新 update user set column = value update user set sex= m table削除 drop table table name ; drop table user;
https://w.atwiki.jp/elvis/pages/3846.html
Federal Government Contractors/Accounting and Auditing No 012430 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Finance Companies Including Independent and Captive Financing of Other Companies/Accounting and Auditing No 012169 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Audits of Property and Liability Insurance Companies As of December 31, 1990/011914 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Audits of Providers of Health Care Services As of December 31, 1990/012425 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Audits of Stock Life Insurance Companies/012032 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Independent Auditors Use of the Work of Internal Auditors/Auditing Procedures Studies No 021051 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Internal Accounting Control Evaluation and Auditor Judgement/Auditing Research Monographs No 020038 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Checklists and Illustrative Financial Statements for Agricultural Cooperatives/November 1990/008551 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Checklists and Illustrative Financial Statements for Banks/September 1991/008486 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Checklists and Illustrative Financial Statements for Colleges and Universities/July 1991/008576 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Checklists and Illustrative Financial Statements for Credit Unions/September 1991/008511 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Cpa Examination Questions and Answers Indexed to Content Specification Outlines 1989 to 1993/General Interest No 079247 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Checklist of Emerging Issues Task Force Consensuses/March 1990/008580 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Checklists and Illustrative Financial Statements for Personal Financial Statement Engagements/June 1990/008595 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Disclosure Checklist and Illustrative Financial Statements for Prospective Financial Statement Engagements/Winter 1989/008555 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Checklists and Illustrative Financial Statements for Health Care Providers/July 1991/008590 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Checklists and Illustrative Financial Statements for Savings and Loan Associations/November 1990/008481 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Income Recognition on Loans to Financially Troubled Countries/Acsed Practice Bulletin Order No 033146 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Checklists and Illustrative Financial Statements for Stock Life Insurance Companies/November 1990/008600 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Checklists and Illustrative Financial Statements for Corporations/October 1991/008518 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Checklist Supplement for Agricultural Producers and Illustrative Financial Statements/April 1990/008585 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Checklist Supplement and Illustrative Financial Statements for Construction Contractors/September 1991/008522 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Disclosure Supplement and Illustrative Financial Statements for Development Stage Enterprises/Spring 1989/08553 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Checklist Supplement for Investment Companies and Illustrative Financial Statements/008560 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Checklist Supplement for Oil and Gas Producers and Illustrative Financial Statements/April 1990/007975 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Disclosure Supplement and Illustrative Financial Statements for Real Estate Ventures/November 1989/008535 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Amortization of Discounts on Certain Acquired Loans/Acsec Practice Bulletin No 033150 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Codification of Statements on Standards for Attestation Engagements/Accounting and Auditing No 057261 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Quasi-Reorganizations Issues Paper 88-1 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? The Accounting Profession in Argentina (Professional Accounting in Foreign Countries, No 010142) Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? The Accounting Profession in Australia (Professional Accounting in Foreign Countries, No 010138) Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Philippines/Professional Accounting in Foreign Countries No 010110 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Other Comprehensive Bases of Accounting (Technical Information of Practitioners No 008040) Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Audit Planning (Technical Information for Practitioners No 008056) Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Indexes for the Mas Publications/Management Advisory Services No 055950 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Introduction to Natural Language/Management Advisory Services No 048560 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Cash Management/Mas Small Business Consulting Practice AIDS No 055342 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Evaluating and Starting a New Business/Mas Small Business Consulting Practice AIDS No 055357 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Assessing Franchise Opportunities/Mas Small Business Consulting Practice AIDS No 055361 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Assisting Professional Clients in Pricing Services Using Budgeting Techniques/Mas Small Business Consulting Practice AIDS No 055376 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Edp Engagement Implementation of Data Processing Systems Using Mainframes or Minicomputers/Management Advisory Services No 055111 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Subjects-Religion&Spirituality? Mas Technical Practice Aid 11 Conversion to Microcomputer-Based Accounting System/Management Advisory Services No. 055126 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Assisting Clients in Developing an Employee Handbook/Management Advisory Services No 055127 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Microcomputer Security/Management Advisory Services No 055128 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Consideration of Internal Control in a Financial Statement Audit Audit Accounting Guides Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Personal Financial Statements Guide Amer Inst of Certified Public AmerInstofCertifiedPublic undefined undefined Audit and Accounting Guide Savings and Loan Associations Including Statements of Position and Special Report/Pbn 012099 Amer Inst of Certified Public AmerInstofCertifiedPublic undefined undefined Illustrations of Foreign Currency Translation A Survey of the Application of Fasb Statement No. 52 Amer Inst of Certified PublicHortense Goodman?Leonard Lorensen? AmerInstofCertifiedPublic HortenseGoodman? LeonardLorensen? undefined undefined Illustrations and Analysis of Disclosures of Inflation Accounting Information Amer Inst of Certified PublicHortense Goodman?Anthony Phillips? AmerInstofCertifiedPublic HortenseGoodman? AnthonyPhillips? undefined undefined Illustrations and Analysis of Disclosures of Pension Information Amer Inst of Certified PublicHortense Goodman?Frank Munn? AmerInstofCertifiedPublic HortenseGoodman? FrankMunn? undefined undefined Amer Inst of Certified Public-洋書? [[Amer Inst of Certified Public}} 洋書
https://w.atwiki.jp/n-3104/pages/12.html
前提 特徴 とりあえず使ってみるiBATIS SQL Maps チュートリアル For SQL Maps Version 2.0 February 18, 2006 ibatis-2.3.0.677.zipに付属のsimple_example トランザクション iBATIS-SqlMaps-2_ja.pdf Abator概要 Eclipseプラグインインストール手順 使い方 前提 ibatis-2.3.0.677.zip j2sdk1.4.2_11 Microsoft SQL Server 2000 Eclipse SDK バージョン 3.1.1 Abator code generator for iBATIS 1.0.0 特徴 SQL文を記述するO/Rマッピングフレームワーク。参照系SQLの検索結果とJavaBeansのマッピングを設定ファイルで行うことが出来きる。SQLを直接記述できるためチューニングが容易であるが、特定のDBに依存してしまう。 SQL文を外部ファイルで管理できる。 動的SQL用の独自の構文をサポートしている。 検索結果のJavaBeansのキャッシュ機能がある。 あるBeanのプロパティのBeanについてもまとめて検索できる。この際の方法は以下の2通り。遅延ローディング join とりあえず使ってみる iBATIS SQL Maps チュートリアル For SQL Maps Version 2.0 February 18, 2006 iBATISのサイトで配布されている「iBATIS-SqlMaps-2-Tutorial_ja.pdf」を参考にとりあえず動かしてみようとした。だが、チュートリアルの時点で以下の点で誤植(?)があった。 クラス名は MyAppSqlConfig だが使用例では MyAppSqlMapConfig で、Mapが増えている。 MyAppSqlConfig の resource の値が com/ibatis/example/sqlMap-config.xml となっているが、それまで紹介されたものは examples/sqlmap/maps/SqlMapConfigExample.xml である。 しかも、SQLServer2000の場合は、JDBCドライバのコネクションURLに SelectMethod=Cursor を追加する必要があり、これに気付かず1時間近く嵌ってしまった。まぁ、これもiBATIS-SqlMaps-2_ja.pdfに明記されてはいたが。 http //support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B313181 そして、setBirthDate(null)にするとエラーとなってしまう。newPerson.setBirthDate(new java.sql.Date(new Date().getTime()))とかすればエラーにはならなかったが。 Person newPerson = new Person(); newPerson.setId(12); // you would normally get the ID from a sequence or custom table // newPerson.setBirthDate(null); newPerson.setBirthDate(new java.sql.Date(new Date().getTime())); null を指定できるようにするには、xmlファイルにおいてjdbcTypeを指定する必要がある。前述のガイドでも触れられているが、null値を指定する場合はjdbcTypeを明示的に指定しないとエラーになる場合があるらしい。具体的にはPerson.xmlのinsertPersonにおいてbirthDateにjdbcTypeとしてDATEを追加すればよい。 #birthDate# → #birthDate DATE# ibatis-2.3.0.677.zipに付属のsimple_example チュートリアルがうまく動かなかったので、zipファイルに付属している使用例を使ってみようとしたが、Account.xmlの insertAccount で values の前に ) がついていなかった。。 トランザクション SqlMapClient+startTransaction をしなければ、オートコミットの挙動になった。以下のソースでstartTransactionメソッドを呼ばなければ、insertについてもコミットされていた SqlMapClient sqlMap = MyAppSqlMapConfig.getSqlMapInstance(); sqlMap.startTransaction(); // トランザクションの開始 Person person = new Person(); ... sqlMap.delete ("deletePerson", person); sqlMap.commitTransaction(); // この時点で一旦コミット sqlMap.insert("insertPerson", person); sqlMap.endTransaction(); // insertについてはロールバックされる また、dataSourceのJDBC.DefaultAutoCommitプロパティの値はstartTransactionでトランザクションを開始した場合には有効であるが、開始していない場合は無視された。 transactionManager type="JDBC" dataSource type="SIMPLE" property name="JDBC.Driver" value="${driver}"/ property name="JDBC.ConnectionURL" value="${url}"/ property name="JDBC.Username" value="${username}"/ property name="JDBC.Password" value="${password}"/ property name="JDBC.DefaultAutoCommit" value="false"/ /dataSource /transactionManager iBATIS-SqlMaps-2_ja.pdf 短いが、非常に良くまとまっている。不明点があれば参照すべきガイドである。 Abator 概要 iBATIS用の設定ファイルとソースコードを自動生成してくれるツール。Eclipse用のプラグインも存在する。 Eclipseプラグイン インストール手順 http //ibatis.apache.org/abator.html を参照。更新アクセス先サイトを追加するだけで簡単に追加できる。 使い方 新規メニューの中に "Abator For iBATIS Configuration File" が追加されるので、それをクリックすると abatorConfig.xml の雛形が生成される。この中身を適切に設定すれば自動生成できる。 abatorConfig.xml abatorConfiguration abatorContext jdbcConnection driverClass="com.microsoft.jdbc.sqlserver.SQLServerDriver" connectionURL="jdbc microsoft sqlserver //localhost 1433;databaseName=test;SelectMethod=Cursor" userId="???" password="???" classPathEntry location="C /workspace/iBatis/msbase.jar" / classPathEntry location="C /workspace/iBatis/mssqlserver.jar" / classPathEntry location="C /workspace/iBatis/msutil.jar" / /jdbcConnection javaModelGenerator targetPackage="hoge.bean" targetProject="iBatis/src" / sqlMapGenerator targetPackage="hoge.map" targetProject="iBatis/src" / daoGenerator type="IBATIS" targetPackage="hoge.dao" targetProject="iBatis/src" / table tableName="PERSON"/ /abatorContext /abatorConfiguration ポイントは以下の通り。細かい情報は http //ibatis.apache.org/docs/tools/abator/ を参照。 classPathEntryは絶対パスが無難 targetProjectはEclipseのプロジェクト名+ソースフォルダ名 tableにschema属性をつけたらうまく動かなかった。 また、生成されたDAOは iBATIS DAO framework を前提としているためコンパイルエラーになる。iBATISは 2.3 から DAO framework 廃止し、Spring framework に移行することを推奨しているが、Abatorはまだ対応していないようだ。